/**
 一.封装性的概念
1.封装性是面向对象思想的三大特征之一。
2.封装就是隐藏实现细节，仅对提供访问接口。

	封装有:
属性的封装,方法的封装,类的封装，组件的封装,模块化封装，系统级封装...

二.封装的好处
1.模块化
2.信息隐藏
3.代码重用
4.插件化易于调试
5.具有安全性

封装缺点:
会影响执行效率

一个类有3个封装
1.类属性封装 private 类.属性
2.类的构造封装  
3.setter and getter
#####
1.成员变量和局部变量
成员变量:在类中定义
局部变量:在方法中定义或者方法的参数
2.在内存中的位置不同
成员变量:在堆内存(成员变量属于对象,对象进堆内存）
局部变量:在栈内存(局部变量属于方法,方法进栈内存）
3.生命周期不同
成员变量:随着对象的创建而存在，随着对象的销毁而消失
局部变量:随着方法的调用而存在，随着方法的调用完毕而消失
4.初始化值不同
成员变量:有默认初始化值，引用类型默认为null
局部变量:没有默认初始值，必须定义，赋值，然后才能使用
注意：局部变量名称可以和成员变量名称一样，在方法中使用的时候，采用的是就近原则。

通常一个类中 属性全部私有化，通过getter and setter 提供对外支持
*/

/*
package com.leo.第四章_面向对象上;
public class U4_L5_封装性 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person person=new Person();
		
		System.out.println(person.getName());
		Person xiao=new Person();
		System.out.println(person.getName());
		//xiaoming.setName("XIAOMING");
		//System.out.println(xiaoming.getName()+xiaoming.getAge());
		
	}

}

class Person{
	//封装 Person 类的原始属性
	static private String name="小pp"; 
	private int age;
	static private int count=0;
	public Person() {
		count++;
		System.out.println("调用构造函数次数: "+count);
		String res=((count+1)%2)==0?name:"pp";
		this.name=res;
	};
	
	//封装 对象的对外属性
	public void setName(String name) {
		this.name=name;
	}
	
	public String getName() {
		return name;
	}
	
	public void setAge(int age) {
		this.age=age;
	}
	public int getAge() {
		return age;
	}
}
*/


